package com.tjh.webflux.functionalWebFluxday44;

import com.tjh.webflux.functionalWebFluxday44.entity.User;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;

/**
 * day45：
 *      使用 WebClient 调用
 *      测试：
 *          1、执行 Server 类的main方法
 *          2、修改 Client 类 WebClient.create("http://127.0.0.1:5794") 的端口号为 Server 类服务器的启动端口号
 *          3、执行 Client 类的main方法
 *          4、查看控制台输出检验效果
 * Create by koala on 2022-11-13
 */
public class Client {

    public static void main(String[] args) {
        //调用服务器地址
        WebClient webClient = WebClient.create("http://127.0.0.1:14017");

        //根据id查询
        String id = "1";
        User userresult = webClient.get().uri("/user/{id}", id)
                .accept(MediaType.APPLICATION_JSON).retrieve().bodyToMono(User.class)
                .block();
        System.out.println(userresult.getName());

        //查询所有
        Flux<User> results = webClient.get().uri("/list")
                .accept(MediaType.APPLICATION_JSON).retrieve().bodyToFlux(User.class);

        results.map(stu -> stu.getName())
                .buffer().doOnNext(System.out::println).blockFirst();
    }
}
